<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!--
 | (Unfortunately) copied from the Fluido skin to allow the footer to be centered.
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>
        Overview</title>
    <link rel="stylesheet" href="../css/apache-maven-fluido.min.css" />
    <link rel="stylesheet" href="../css/site.css" />
    <link rel="stylesheet" href="../css/print.css" media="print" />

        
    <script type="text/javascript" src="../js/apache-maven-fluido.min.js"></script>

    
            <meta name="author" content="Ralph Goers" />
                    <meta name="Date-Revision-yyyymmdd" content="20120921" />
                <meta http-equiv="Content-Language" content="en" />
                </head>
        <body class="topBarDisabled">
            
                
                    
    
        <div class="container-fluid">
        <div id="banner">
        <div class="pull-left">
                                                                                        <a href="../../../" id="bannerLeft">
                                                                                                                                                        <img src="../images/ls-logo.jpg"  alt="Apache Logging Services™"/>
                            </a>
                                </div>
        <div class="pull-right">                    <div id="bannerRight">
                                                                                                                                                        <img src="../images/logo.jpg" />
                            </div>
            </div>
        <div class="clear"><hr/></div>
    </div>

    <div id="breadcrumbs">
        <ul class="breadcrumb">
                        
                        
                            <li id="publishDate">Last Published: 2012-09-21</li>
                        <li class="divider">|</li> <li id="projectVersion">Version: 2.0-beta1</li>
                                    
                        
                        
            
                                                        
    <li class="pull-right">                        <a href="../../../" title="Logging Services">Logging Services</a>
    </li>

                <li class="divider pull-right">|</li>
            
    <li class="pull-right">                        <a href="http://www.apache.org/" class="externalLink" title="Apache">Apache</a>
    </li>

                <li class="divider pull-right">|</li>
            
    <li class="pull-right">                        <a href="http://wiki.apache.org/logging" class="externalLink" title="Logging Wiki">Logging Wiki</a>
    </li>

                                </ul>
    </div>

        <div class="row-fluid">
        <div id="leftColumn" class="span2">
            <div class="well sidebar-nav">
                            
                        
                                                                                    <h3>Apache Log4j™ 2</h3>
                                                    <ul>
                        <li class="none">
                                                <a href="../index.html" title="About">About</a>
                    </li>
                  <li class="none">
                                                <a href="../download.html" title="Download">Download</a>
                    </li>
                  <li class="none">
                                                <a href="../build.html" title="Build and Install">Build and Install</a>
                    </li>
                  <li class="none">
                                                <a href="../changelog.html" title="Changelog">Changelog</a>
                    </li>
              </ul>
                                                                <h3>Manual</h3>
                                                    <ul>
                        <li class="none">
                        <strong>Introduction</strong>
                </li>
                  <li class="none">
                                                <a href="../manual/architecture.html" title="Architecture">Architecture</a>
                    </li>
                  <li class="none">
                                                <a href="../manual/migration.html" title="Log4j 1.x Migration">Log4j 1.x Migration</a>
                    </li>
                                                                                                                                                                                                                                                                                                                                                                                                              <li class="collapsed">
                                                <a href="../manual/api.html" title="API">API</a>
                                </li>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                  <li class="collapsed">
                                                <a href="../manual/configuration.html" title="Configuration">Configuration</a>
                                </li>
                                                                                                                                                                                                                                                  <li class="collapsed">
                                                <a href="../manual/plugins.html" title="Plugins">Plugins</a>
                                </li>
                                                                                                                                                                                                                                                                                                                                                                                                              <li class="collapsed">
                                                <a href="../manual/lookups.html" title="Lookups">Lookups</a>
                                </li>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          <li class="collapsed">
                                                <a href="../manual/appenders.html" title="Appenders">Appenders</a>
                                </li>
                                                                                                                                                                                                                                                                                                                                                                                                              <li class="collapsed">
                                                <a href="../manual/layouts.html" title="Layouts">Layouts</a>
                                </li>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              <li class="collapsed">
                                                <a href="../manual/filters.html" title="Filters">Filters</a>
                                </li>
                  <li class="none">
                                                <a href="../manual/jmx.html" title="JMX">JMX</a>
                    </li>
                  <li class="none">
                                                <a href="../manual/logsep.html" title="Logging Separation">Logging Separation</a>
                    </li>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              <li class="collapsed">
                                                <a href="../manual/extending.html" title="Extending Log4j">Extending Log4j</a>
                                </li>
              </ul>
                                                                <h3>Components</h3>
                                                    <ul>
                        <li class="none">
                                                <a href="../log4j-api/index.html" title="API">API</a>
                    </li>
                  <li class="none">
                                                <a href="../log4j-core/index.html" title="Impl">Impl</a>
                    </li>
                  <li class="none">
                                                <a href="../log4j12-api/index.html" title="Log4J 1.2 API">Log4J 1.2 API</a>
                    </li>
                  <li class="none">
                                                <a href="../log4j-jcl/index.html" title="Commons Logging Bridge">Commons Logging Bridge</a>
                    </li>
                  <li class="none">
                                                <a href="../slf4j-impl/index.html" title="SLF4J Binding">SLF4J Binding</a>
                    </li>
                  <li class="none">
                                                <a href="../log4j-flume-ng/index.html" title="Apache Flume">Apache Flume</a>
                    </li>
                  <li class="none">
                                                <a href="../log4j-web/index.html" title="Log4j Web">Log4j Web</a>
                    </li>
              </ul>
                                                                                                        <h3>Site Documentation</h3>
                                                    <ul>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <li class="collapsed">
                                                <a href="../project-info.html" title="Project Information">Project Information</a>
                                </li>
                                                                                                                                                                                                                                                                                                      <li class="collapsed">
                                                <a href="../project-reports.html" title="Project Reports">Project Reports</a>
                                </li>
              </ul>
                                        
                        
                            
                <hr class="divider" />

                <div id="poweredBy">
                                            <div class="clear"></div>
                                            <div class="clear"></div>
                                            <div class="clear"></div>
                                                <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
            <img class="poweredBy" alt="Built by Maven" src="../images/logos/maven-feather.png" />
        </a>
                            </div>
            </div>
        </div>
    
    <div id="bodyColumn"  class="span10" >
                                
            <!-- Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
    this work for additional information regarding copyright ownership.
    The ASF licenses this file to You under the Apache License, Version 2.0
    (the "License"); you may not use this file except in compliance with
    the License.  You may obtain a copy of the License at

         http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License. -->
    
      <div class="section"><h2>Welcome to Log4j 2!<a name="Welcome_to_Log4j_2"></a></h2>
        <div class="section"><h3>Introduction<a name="Introduction"></a></h3>
          <p>Almost every large application includes its own logging or tracing
          API. In conformance with this rule, the E.U.  <a class="externalLink" href="http://www.semper.org">SEMPER</a> project decided to write its
          own tracing API. This was in early 1996. After countless enhancements,
          several incarnations and much work that API has evolved to become
          log4j, a popular logging package for Java. The package is distributed
          under the <a href="../LICENSE">Apache Software License</a>, a
          fully-fledged open source license certified by the <a class="externalLink" href="http://www.opensource.org">open source</a> initiative. The
          latest log4j version, including full-source code, class files and
          documentation can be found at <a class="externalLink" href="http://logging.apache.org/log4j/2.0/index.html"><b>http://logging.apache.org/log4j/2.0/index.html</b></a>.
          </p>

          <p>Inserting log statements into code is a low-tech method for
          debugging it. It may also be the only way because debuggers are not
          always available or applicable. This is usually the case for
          multithreaded applications and distributed applications at large.</p>

          <p>Experience indicates that logging was an important component of the
          development cycle. It offeres several advantages. It provides precise
          <i>context</i> about a run of the application. Once inserted into
          the code, the generation of logging output requires no human
          intervention.  Moreover, log output can be saved in persistent medium
          to be studied at a later time. In addition to its use in the
          development cycle, a sufficiently rich logging package can also be
          viewed as an auditing tool.</p>

          <p>As Brian W. Kernighan and Rob Pike put it in their truly excellent
          book <i>&quot;The Practice of Programming&quot;</i>
          </p><div><pre>
            As personal choice, we tend not to use debuggers beyond getting a
            stack trace or the value of a variable or two. One reason is that it
            is easy to get lost in details of complicated data structures and
            control flow; we find stepping through a program less productive
            than thinking harder and adding output statements and self-checking
            code at critical places. Clicking over statements takes longer than
            scanning the output of judiciously-placed displays. It takes less
            time to decide where to put print statements than to single-step to
            the critical section of code, even assuming we know where that
            is. More important, debugging statements stay with the program;
            debugging sessions are transient.
          </pre></div>

          <p>Logging does have its drawbacks. It can slow down an
          application. If too verbose, it can cause scrolling blindness. To
          alleviate these concerns, log4j is designed to be reliable, fast and
          extensible. Since logging is rarely the main focus of an application,
          the log4j API strives to be simple to understand and to use.</p>
        </div>
        <div class="section"><h3>Log4j 2<a name="Log4j_2"></a></h3>
          Log4j 1.x has been widely adopted and used in many applications. However,
          through the years development on it has slowed down. It has become more
          difficult to maintain due to its need to be compliant with very old versions
          of Java.  Its alternative, SLF4J/Logback made many needed improvements to the
          framework. So why bother with Log4j 2? Here are a few of the reasons.
          <ol style="list-style-type: decimal">
            <li>Log4j 2 is designed to be usable as an audit logging framework. Both Log4j
              1.x and Logback will lose events while reconfiguring. Log4j 2 will not. in
              Logback exceptions in Appenders are never visible to the application. In
              Log4j 2 Appenders can be configured to allow the exception to percolate
              to the application</li>
            <li>Log4j 2 uses a Plugin system that makes it extremely easy to extend the
              framework by adding new Appenders, Filters, Layouts, Lookups,
              and Pattern Converters without requiring any changes to Log4j.</li>
            <li>The performance of Log4j 2 is similar to that of Logback. It is slightly
              slower in some tests and faster in others.</li>
            <li>Due to the Plugin system configuration is simpler. Entries in the configuration
              do not require a class name to be specified.</li>
            <li>Support for Message objects. Messages allow support for interesting and
              complex constructs to be passed through the logging system and be efficiently
              manipulated. Users are free to create their own Message types and write custom
              Layouts, Filters and Lookups to manipulate them.</li>
            <li>Log4j 1.x supports Filters on Appenders. Logback added TurboFilters to allow
              filtering of events before they are processed by a Logger. Log4j 2 supports
              Filters that can be configured to process events before they are handled by
              a Logger, as they are processed by a Logger or on an Appender.</li>
            <li>Many Logback Appenders do not accept a Layout and will only send data in a
              fixed format. Most Log4j 2 Appenders accept a Layout, allowing the data to
              be transported in any format desired.</li>
            <li>Layouts in Log4j 1.x and Logback return a String. This resulted in the problems
              discussed at <a class="externalLink" href="http://logback.qos.ch/manual/encoders.html">Logback Encoders</a>.
              Log4j 2 takes the simpler approach that Layouts always return a byte array. This has
              the advantage that it means they can be used in virtually any Appender, not just
              the ones that write to an OutputStream.</li>
            <li>The Syslog Appender supports both TCP and UDP as well as support for the BSD syslog
              and the <a class="externalLink" href="http://tools.ietf.org/html/rfc5424">RFC 5424</a> formats.</li>
            <li>Log4j 2 takes advantage of Java 5 concurrency support and performs locking
              at the lowest level possible. Log4j 1.x has known deadlock issues. Many of these
              are fixed in Logback but many Logback classes still require synchronization at
              a fairly high level.</li>
            <li>It is an Apache Software Foundation project following the community and support
              model used by all ASF projects. If you want to contribute or gain the right to
              commit changes just follow the path outlined at
              <a class="externalLink" href="http://jakarta.apache.org/site/contributing.html">Contributing</a></li>
          </ol>
        </div>
      </div>
    

            </div>
        </div>
    
    <hr/>

    <footer>
                <div class="container-fluid">
                <div class="row footer">Copyright &copy; 1999-2012 <a href="http://www.apache.org">Apache Software Foundation</a>. All Rights Reserved.</br />
            Apache Logging, Apache Log4j, Log4j, Apache, the Apache feather logo, and the Apache Logging project logo are trademarks of The Apache Software Foundation.</div>
        </div>
    </footer>
</body>
</html>